package br.com.freelancer.util;

/**
 * @author tiago nogueira
 * 
 */
public class HtmlHelper {
	
	//Construtor privado. Os m-todos devem ser est-ticos
	private HtmlHelper() {}
	
	public static String escapeMarkup(final String string, /*final boolean escapeSpaces,*/	final boolean convertToHtmlUnicodeEscapes) {
		
		if (string != null) {

			StringBuilder buffer = new StringBuilder();
			for (int i = 0; i < string.length(); i++) {
				final char c = string.charAt(i);

				switch (c) {
//				case '\t':
//					/*
//					 * if (escapeSpaces){ // Assumption is four space tabs
//					 * (sorry, but that's // just how it is!)
//					 */
//					buffer.append("&nbsp;&nbsp;&nbsp;&nbsp;");
//					/*
//					 * } else { buffer.append(c); }
//					 */break;
//
//				case ' ':
//					/*
//					 * if (escapeSpaces) {
//					 */
//					buffer.append("&nbsp;");
//					/*
//					 * } else { buffer.append(c); }
//					 */
//					break;

				case '<':
					buffer.append("&lt;");
					break;

				case '>':
					buffer.append("&gt;");
					break;

				case '&':

					buffer.append("&amp;");
					break;

				case '"':
					buffer.append("&quot;");
					break;

				case '\'':
					buffer.append("&#039;");
					break;

				default:

					if (convertToHtmlUnicodeEscapes) {
						int ci = 0xffff & c;
						if (ci < 160) {
							// nothing special only 7 Bit
							buffer.append(c);
						} else {
							// Not 7 Bit use the unicode system
							buffer.append("&#");
							buffer.append(new Integer(ci).toString());
							buffer.append(';');
						}
					} else {
						buffer.append(c);
					}

					break;
				}
			}

			return buffer.toString();

		} else {

			return null;
		}
	}

	public static String backMarkup(String string) {
		
		if (string != null) {
			string = string.replaceAll("&lt;", "<");
			string = string.replaceAll("&gt;", ">");
			string = string.replaceAll("&amp;", "&");
			string = string.replaceAll("&quot;", "");
			string = string.replaceAll("&#039;", "\"");
			return  string.replaceAll("&quot;", "\'");
			
		} else {

			return null;
		}
		
	}
}